07 - 推理平台全景
本文转载自开源文档站 AI Infra 学习笔记,作者 程治玮(Se7en / cr7258),仅作个人学习存档,内容与配图保持原样。
- 原文链接:https://se7en.mintlify.app/talks/07-inference-platform
- 源仓库:https://github.com/ai-infra-learning/docs
- 许可证:MIT License
- 原始分享:2026-03-01 · 主讲 程治玮
推理平台(Inference Platform)是位于推理引擎(如 vLLM、SGLang)之上、面向生产环境的基础设施层。推理引擎专注于模型加载和推理计算本身,而推理平台则在此之上提供生产级的编排和管理能力,例如:
- 多推理引擎支持:支持 vLLM、SGLang、TensorRT-LLM 等不同推理引擎。
- 智能路由与负载均衡:提供面向 LLM 推理优化的路由策略,如 Prefix Cache 感知、KV Cache 利用率、请求队列深度、LoRA 亲和性路由等。
- 流量管理与发布策略:支持金丝雀发布、加权流量分配,以及零停机的滚动更新。
- 容错机制:支持请求迁移、请求取消、优雅关闭、过载拒绝等自动故障转移能力,保障生产环境的高可用性。
- PD 分离:支持通过分离 Prefill 和 Decode 节点来优化大模型服务以提升性能。
- 分布式推理编排:支持多节点、多 GPU 的分布式推理编排,例如通过 Ray 等管理分布式工作负载的创建和生命周期,使得超大模型(如 DeepSeek V3 685B)可以跨多节点部署和服务。
- 弹性伸缩:基于 GPU 利用率、KV Cache 占用率、请求队列深度等指标自动扩缩容。
- 模型与 KV Cache 管理:支持本地缓存预热模型加速推理服务启动,提供中心化的分布式 KV Cache Pool 实现跨推理实例的 KV Cache 共享和复用。
- LoRA Adapter 管理:动态路由和管理 LoRA Adapter,无需中断服务即可加载、卸载 LoRA Adapter。
- 可观测性:通过 Prometheus 等采集 LLM 推理指标(如 GPU/KV Cache 利用率、TTFT、TPOT、请求队列深度等),实现生产环境的监控和告警。
- 多租户与资源管理:通过配额、队列/优先级、隔离与抢占等机制,实现多团队共享 GPU 资源时的可控性与公平性。
目前主流的推理平台在核心能力上趋于一致:基本都支持多引擎(vLLM、SGLang 等)、PD 分离、多节点推理、Prefix Cache 智能路由等特性。本文分别介绍各推理平台时,会侧重其比较有特点的功能,但这并不代表这些功能其他推理平台不支持。
1. NVIDIA Dynamo
Dynamo 是 NVIDIA 开源的高吞吐、低延迟推理框架,专为在多节点分布式环境中服务生成式 AI 和推理模型而设计。Dynamo 支持多种推理引擎(例如 TensorRT-LLM、vLLM、SGLang),使用 Rust 构建核心以保证性能,Python 提供可扩展性,主要特性包括:
- Prefill-Decode 分离:在延迟和吞吐之间灵活权衡,最大化 GPU 吞吐。
- 动态 GPU 调度:根据波动的需求动态优化性能。
- LLM 感知的请求路由:消除不必要的 KV Cache 重计算。
- 加速数据传输:通过 NIXL 减少推理响应时间。
- KV Cache 卸载:利用多级内存层次提高吞吐。
安装 Dynamo 可 以参考 Installation Guide for Dynamo Kubernetes Platform。
1.1 使用 DynamoGraphDeployment 部署推理服务
Dynamo 提供了 DynamoGraphDeployment CRD,用于在 Kubernetes 中声明式地部署推理服务。用户只需定义推理图中的各个组件(Frontend、Worker 等)及其资源需求,Dynamo Operator 会自动创建和管理对应的工作负载资源。
1.1.1 聚合模式
以下是一个最简单的聚合部署示例,包含一个 Frontend 和一个 vLLM Worker:
apiVersion: nvidia.com/v1alpha1
kind: DynamoGraphDeployment
metadata:
name: vllm-agg
spec:
services:
Frontend:
componentType: frontend
replicas: 1
extraPodSpec:
mainContainer:
image: nvcr.io/nvidia/ai-dynamo/vllm-runtime:0.9.0
VllmDecodeWorker:
envFromSecret: hf-token-secret
componentType: worker
replicas: 1
resources:
limits:
gpu: "1"
extraPodSpec:
mainContainer:
image: nvcr.io/nvidia/ai-dynamo/vllm-runtime:0.9.0
workingDir: /workspace/examples/backends/vllm
command:
- python3
- -m
- dynamo.vllm
args:
- --model
- Qwen/Qwen3-0.6B
1.1.2 PD 分离模式
Dynamo 的 PD 分离由 PrefillRouter 协调,整体流程如下:
- Worker 选择:PrefillRouter 通过 KV Cache 感知路由(基于缓存命中率和负载)或简单负载均衡选择一个 Prefill Worker。
- Prefill 执行:PrefillRouter 将请求发送到选定的 Prefill Worker,Prefill Worker 计算 KV Cache 并返回
disaggregated_params(包含后端特定的传输元数据)。 - Decode 路由:PrefillRouter 将 Prefill 结果注入 Decode 请求,然后路由到 Decode Worker。
- KV Cache 传输:Decode Worker 使用传输元数据与 Prefill Worker 协调,NIXL 使用最优的可用传输方式(NVLink、InfiniBand/UCX 等)处理 GPU-to-GPU 的直接传输。
- Token 生成:Decode Worker 执行 Decode 阶段,生成并返回 token。
PrefillRouter 运行在 Frontend 进程内部,不是独立部署的组件。
以下是 PD 分离的 DynamoGraphDeployment 配置示例。与聚合模式相比,PD 分离的关键配置差异在于:
subComponentType: prefill/decode:Operator 层面的身份标识,用于服务发现和编排(如为 Prefill 和 Decode Worker 创建不同的 Service,让 PrefillRouter 能正确发现和路由到对应的 Worker)。--is-prefill-worker/--is-decode-worker:dynamo.vllm(Dynamo 对 vLLM 的封装模块)的运行时参数,决定该进程在 Dynamo 服务发现中注册为 Prefill 或 Decode 角色,从而只接收对应类型的请求。注意 vLLM 引擎本身以kv_role: kv_both运行,Prefill/Decode 的分工完 全由 Dynamo 的 PrefillRouter 在请求路由层面控制。
apiVersion: nvidia.com/v1alpha1
kind: DynamoGraphDeployment
metadata:
name: vllm-disagg
spec:
services:
Frontend:
componentType: frontend
replicas: 1
extraPodSpec:
mainContainer:
image: nvcr.io/nvidia/ai-dynamo/vllm-runtime:0.9.0
VllmDecodeWorker:
envFromSecret: hf-token-secret
componentType: worker
subComponentType: decode
replicas: 1
resources:
limits:
gpu: "1"
extraPodSpec:
mainContainer:
image: nvcr.io/nvidia/ai-dynamo/vllm-runtime:0.9.0
workingDir: /workspace/examples/backends/vllm
command:
- python3
- -m
- dynamo.vllm
args:
- --model
- Qwen/Qwen3-0.6B
- --is-decode-worker
VllmPrefillWorker:
envFromSecret: hf-token-secret
componentType: worker
subComponentType: prefill
replicas: 1
resources:
limits:
gpu: "1"
extraPodSpec:
mainContainer:
image: nvcr.io/nvidia/ai-dynamo/vllm-runtime:0.9.0
workingDir: /workspace/examples/backends/vllm
command:
- python3
- -m
- dynamo.vllm
args:
- --model
- Qwen/Qwen3-0.6B
- --is-prefill-worker
1.2 Prefix Cache Aware Routing
Dynamo KV Router 通过评估请求在不同 Worker 上的计算成本来智能路由请求,综合考虑 Decode 成本(来自活跃 Blocks)和 Prefill 成本(来自新计算的 Blocks),在最大化 Prefix Cache 命中率的同时保持负载均衡。
